Method and system for distributing browser-based computer games and files

ABSTRACT

A method for securing, distributing, and updating a browser-based game includes encrypting a compiled browser-based computer game and wrapping the encrypted compiled browser-based computer game within a browser-based game loader. The browser-based game loader is executable by a web browser to decrypt the encrypted browser-based computer game and, in some embodiments, update the browser-based computer game to a newer version prior to execution.

TECHNICAL FIELD

The present disclosure relates generally to methods and systems for distributing browser-based computer games, and more particularly, to methods and systems for securing, distributing, and updating browser-based computer games.

BACKGROUND

Browser-based computer games are games playable within a web browser of a computer. Depending on the type of browser-based computer game, the web browser may be required to include a plug-in, extension, or other additional feature or capability to properly execute the browser-based computer game. For example, if the browser-based computer game is embodied as a Flash game, the web browser may be required to include a Flash plug-in to properly execute the Flash game. Browser-based computer games are different from other online games in that the majority, if not all, of the gaming code is stored and executed by the end-user client. Additionally, browser-based computer games are different from other end-user games in that browser-based computer games are executed or otherwise playable via a web browser as discussed above.

Browser-based computer games may be distributed across a network, such as the Internet, by the game developer or other third-party. Version control of browser-based computer games is challenging because the breadth of distribution of the games and the general ability of end-users to decompile, and thereafter modify, the game code of the browser-based computer game.

SUMMARY

According to one aspect, a method for securing a browser-based computer game may include receiving a compiled browser-based computer game over a network such as, for example, the Internet. The method may also include encrypting the compiled browser-based computer game to generate an encrypted compiled browser-based computer game. The method may further include generating a browser-based game loader. The browser-based game loader may include the encrypted compiled browser-based computer game. The encryption of the compiled browser-based computer game may include generating an encryption key. In some embodiments, the browser-based game loader may include the encryption key. Additionally or alternatively, the method may include storing the encryption key on, for example, the server.

In some embodiments, execution of the browser-based game loader by a web browser may cause the web browser to decrypt the encrypted compiled browser-based computer game and execute the compiled browser based computer game. Additionally, execution of the browser-based game loader by the web browser may cause the browser-based game loader to decrypt the encrypted compiled browser-based computer game using the encryption key. Execution of the browser-based game loader by the web browser may also cause the browser-based game loader to retrieve the encryption key from the server and decrypt the encrypted compiled browser-based computer game using the encryption key.

In some embodiments, the method may further include receiving an updated version of the compiled browser-based computer game over the network. In such embodiments, the method may include determining differences between the compiled browser-based computer game and the updated version of the compiled browser-based computer game and generating an update file based on the differences between the compiled browser-based computer game and the updated version of the compiled browser-based computer game. The update file may include, for example, programming code which when merged with the compiled browser-based computer game generates a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.

The method may also include generating a browser-executable game patch file, the browser-executable game patch file including the update file. Execution of the browser-executable game patch file by a web browser may cause the web browser to merge the update file with the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game. Additionally, the method may include storing the browser-executable game patch file on the server. In some embodiments, execution of the browser-based game loader may cause the web browser to retrieve the browser-executable game patch file from the server and execute the browser-executable game patch file. Additionally or alternatively, the method may merging the update file with the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.

According to another aspect, a method for executing a browser-based computer game may include downloading a browser-based game loader over a network and executing the browser-based game loader with a web browser. The browser-based game loader may include an encrypted compiled browser-based computer game. Execution of the browser-based game loader may cause the web browser to decrypt the encrypted compiled browser-based computer game and execute the compiled browser based computer game. For example, in some embodiments, the execution of the browser-based game loader may cause the web browser to decrypt the encrypted compiled browser-based computer game using an encryption key. Additionally or alternatively, the execution of the browser-based game loader may cause the web browser to retrieve an encryption key from a server and decrypt the encrypted compiled browser-based computer game using the encryption key.

In some embodiments, the method may also include communicating with a server to determine whether an updated version of the compiled browser-based computer game exists. Additionally, the method may include retrieving a browser-executable game patch file from the server if the updated version of the compiled browser-based computer game exists. The browser-executable game patch file may include programming code which when merged with the compiled browser-based computer game generates a browser-based computer game equivalent to the updated version of the compiled browser-based computer game. Further, the method may include merging the programming code and the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.

In some embodiments, the execution of the browser-based game loader may also cause the web browser to communicate with a server to retrieve an advertisement and display the advertisement in the web browser. The advertisement may be displayed in the web browser contemporaneously with the compiled browser-based computer game. Additionally or alternatively, the advertisement may be displayed in the web browser between game segments of the compiled browser-based computer game.

According to a further aspect, a method for updating a browser-based computer game may include downloading an encrypted compiled browser-based computer game over a network, decrypting the encrypted compiled browser-based computer game to generate a compiled browser-based computer game, communicating with a server over the network to determine whether an update version of the compiled browser-based computer game is available, retrieving programming code from the server if the updated version of the compiled browser-based computer game is available, and/or updating the compiled browser-based computer game with the programming code to generate an updated compiled browser-based computer game substantially similar to the updated version of the compiled browser-based computer game.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description particularly refers to the following figures, in which:

FIG. 1 is a simplified block diagram of a system for distributing browser-based computer games and files;

FIG. 2 is a simplified flow diagram of one embodiment of a method for distributing a browser-based computer game and files;

FIG. 3 is a simplified flow diagram of one embodiment of an algorithm for encrypting a browser-based computer game, which may be executed by a server of the system of FIG. 1;

FIG. 4 is a simplified flow diagram of one embodiment of an algorithm for executing a browser-based game, which may be executed by an end-user client of the system of FIG. 1;

FIG. 5 is a simplified flow diagram of one embodiment of an algorithm for decrypting and updating a browser-based computer game, which may be executed by an end-user client of the system of FIG. 1; and

FIG. 6 is a simplified flow diagram of one embodiment of an algorithm for generating a game patch file for updating a browser-based computer game.

DETAILED DESCRIPTION OF THE DRAWINGS

While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific exemplary embodiments thereof have been shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention as defined by the appended claims.

In the following description, low-level hardware architecture and full software instruction sequences have not been shown in detail in order not to obscure the invention. Those of ordinary skill in the art, with the included descriptions, will be able to implement appropriate functionality without undue experimentation.

References in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.

Embodiments of the invention may be implemented in hardware, firmware, software, or any combination thereof. Embodiments of the invention implemented in a computer system may include one or more bus-based interconnects between components and/or one or more point-to-point interconnects between components. Embodiments of the invention may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by one or more processors. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computing device). For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; and others.

Referring now to FIG. 1, a system 100 for distributing and updating browser-based computer games and files includes a server 102, a game developer client/server 104, and one or more end-user clients 106. The server 102 and the developer client/server 104, and the end-user clients 106 are configured to communicate with each other over a network 108. The network 108 may be embodied as or otherwise include any type of network(s) capable of facilitating communication between the server 102, the developer client/server 104, and the end-user clients 106. For example, the network 108 may be embodied as or otherwise include a wired network, a wireless network, a local area network (LAN), and/or a wide area network (WAN). In one particular embodiment, the network 108 is embodied as or otherwise includes a publically-accessible global network such as the Internet.

The server 102 is communicatively coupled to the network 108 via a number of communication links 110. Similarly, the game developer client/server 104 is communicatively coupled to the network 108 via a number of communication links 112. Additionally, each of the end-user clients 104 is communicatively coupled to the network 108 via a number of communication links 114. Each of the communication links 110, 112, 114 may be embodied as any type of communication links capable of facilitating communication between the respective server 102, developer client/server 104, and clients 106 and the network 108. For example, any one or more of the communication links 110, 112, 114 may be embodied as any number of wires, cables, printed circuit board traces, vias, and/or other communication links. Additionally, any one or more of the communication links 110, 112, 114 and/or the network 108 may include any number of communication devices such as routers, switches, modems, and the like to facilitate communication therebetween.

The server 102 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. That is, although only a single server 102 is illustrated in FIG. 1, the server 102 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments. The server 102 includes a processor 120 and a memory device 122. The processor 120 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs). Although the server 102 includes only a single processor 120 in the embodiment illustrated in FIG. 1, the server 102 may include any number of processors (or processor cores) in other embodiments.

The memory device 122 may be embodied as any type of memory device such as read-only memory (ROM) devices and random access memory devices including, but not limited dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate dynamic random access memory device (DDR SDRAM), and/or other volatile memory devices. Additionally, although only a single memory device 122 is illustrated in FIG. 1, in other embodiments, the server 102 may include any number of memory devices.

The server 102 also includes a storage device 124. The storage devices 124 may be embodied as any device configured for data storage. That is, the storage device 124 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 124 is separate from the server 102, but communicatively coupled thereto. In addition, the server 102 may include other devices and circuitry typically found in a server or computer for performing the functions described herein including but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.

The game developer client/server 106 includes a developer client 130 and a web server 132. In some embodiments, the developer client 130 and the web server 132 may be embodied as the same computer or computing device. In other embodiments, the developer client 130 and web server 132 may be separate, but communicatively coupled computer or computing devices as is shown in FIG. 1. Further, in some embodiments, the developer client 130 is under the control of the browser-game developer while the web server 132 is under the control of a third-party. That is, in some embodiments, the system 100 may include any number of third-party web servers 132.

The developer client 130 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. That is, although only a single developer client 130 is illustrated in FIG. 1, the developer client 130 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments. The developer client 130 includes a processor 140 and a memory device 142. The processor 140 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs). Although the developer client 130 includes only a single processor 140 in the embodiment illustrated in FIG. 1, the developer client 130 may include any number of processors (or processor cores) in other embodiments.

The memory device 142 may be embodied as any type of memory device such as read-only memory (ROM) devices and random access memory devices including, but not limited dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate dynamic random access memory device (DDR SDRAM), and/or other volatile memory devices. Additionally, although only a single memory device 142 is illustrated in FIG. 1, in other embodiments, the developer client 130 may include any number of memory devices.

The developer client 130 also includes a storage device 144. The storage devices 144 may be embodied as any device configured for data storage. That is, the storage device 144 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 144 is separate from the developer client 130, but communicatively coupled thereto. In addition, the developer client 130 may include other devices and circuitry typically found in a client or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.

The web server 132 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. That is, although only a single web server 132 is illustrated in FIG. 1, the web server 132 may be embodied as any number of separate devices (e.g., computers, databases, communication devices, etc) in other embodiments. The web server 132 includes a processor 150 and a memory device 152. The processor 150 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs). Although the web server 132 includes only a single processor 150 in the embodiment illustrated in FIG. 1, the web server 132 may include any number of processors (or processor cores) in other embodiments.

The memory device 152 may be embodied as any type of memory device such as read-only memory (ROM) devices and random access memory devices including, but not limited dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate dynamic random access memory device (DDR SDRAM), and/or other volatile memory devices. Additionally, although only a single memory device 152 is illustrated in FIG. 1, in other embodiments, the web server 132 may include any number of memory devices.

The web server 132 also includes a storage device 154. The storage devices 154 may be embodied as any device configured for data storage. That is, the storage device 154 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. Additionally, in some embodiments, the storage device 154 is separate from the web server 132, but communicatively coupled thereto. The storage device(s) 154 maintain a number of databases and files, which are utilized in construction and operation of an information portal such as a website. As will be described in greater detail below, the web server 132 functions as a web portal for transmitting browser-based games and files to an end-user (e.g., one of the end-user clients 106). The web server 132 may also include other devices and circuitry typically found in a server or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.

Each of the end-user clients 106 may be embodied as any type of computer or collection of computers or computing devices configured to perform the functions described herein. In the illustrative embodiment of FIG. 1, the end-user client 106 includes a processor 160 and a memory device 162. The processor 160 may be embodied as any type of processor including, for example, discrete processing circuitry (e.g., a collection of logic devices), general purpose integrated circuit(s), and/or application specific integrated circuit(s) (i.e., ASICs). Although the end-user client 106 includes only a single processor 160 in the embodiment illustrated in FIG. 1, the end-user client 106 may include any number of processors (or processor cores) in other embodiments.

The memory device 162 may be embodied as any type of memory device such as read-only memory (ROM) devices and random access memory devices including, but not limited dynamic random access memory devices (DRAM), synchronous dynamic random access memory devices (SDRAM), double-data rate dynamic random access memory device (DDR SDRAM), and/or other volatile memory devices. Additionally, although only a single memory device 162 is illustrated in FIG. 1, in other embodiments, the end-user client 106 may include any number of memory devices.

In some embodiments, any one or more of the end-user clients 106 may also include one or more storage devices 164. The storage devices 164 may be embodied as any device configured for data storage. That is, the storage device 154 may be embodied as any number of discrete devices such as hard drive or collection of hard devices and/or virtual devices such as any number of databases or set of memory locations. In addition, the end-user client 106 may include other devices and circuitry typically found in a client or computer for performing the functions described herein including, but not limited to, input devices such as a keyboard and/or mouse, output devices such as a monitor and/or printer, and/or the like.

Referring now to FIG. 2, a method 200 for distributing a browser-based computer game and/or files begins with a step 202 in which a game developer designs a browser-based computer game. As discussed above, a browser-based computer game is a computer game that is playable within a web browser of a computer. The developer may use any one of a number of game development software applications and/or tools to develop the browser-based computer game. As such, the browser-based computer game may be embodied as any type of browser-based computer game. In one particular embodiment, the browser-based computer game is embodied as a Flash game.

In step 204, the developer operates the developer client 104 to generate a compiled version of the browser-based computer game. Once compiled, the browser-based computer game is executable by and playable in a web browser. However, as discussed above, the web browser in which the browser-based computer game is to be played may require one or more plug-ins to properly play or execute the browser-based computer game. Once compiled, the developer client 104 transmits the compiled browser-based computer game to the server 102 in step 206.

Referring now to FIG. 3, in one embodiment, the server 102 executes an algorithm 300 for encrypting a browser-based computer game. The algorithm 300 begins with step 302 in which the compiled browser-based computer game is received by the server 102. In some embodiments, the server 102 may be configured to store the compiled browser-based game in, for example, the storage device 124. As discussed in more detail below in regard to FIG. 6, the stored browser-based game may be retrieved at a later time for version control and/or other purposes.

In step 304, the sever 102 encrypts the browser-based computer game. To do so, the server 102 may use any suitable encryption algorithm. In one particular embodiment, the server 102 uses an RC4™ software stream cipher (also known as or otherwise referred to as “ARC4”, “ARCFOUR”, and/or “Rivest Cipher 4”), but other encryption algorithms may be used in other embodiments. In regard to some encryption algorithms, the server 102 may use an encryption key to encrypt the browser-based computer game. Depending upon the particular encryption algorithm used, the encryption key may be embodied as data such as numerical or alphanumerical data or programming code usable with a suitable decryption algorithm to decrypt the encrypted browser-based computer game. In some embodiments, the server 102 may be configured to store the encryption key in the storage device 124.

In step 306, the server 102 generates a browser-based game loader. The browser-based game loader is embodied as a browser-executable file, which includes the encrypted browser-based computer game and, in some embodiments, the encryption key. As discussed in more detail below, when the browser-based game loader is executed by a web browser, the browser-based game loader is configured to decrypt the encrypted browser-based computer game and execute (or cause the web browser to execute) the compiled browser-based computer game. In some embodiments, the browser-based game loader is generated using the same programming language or application as the browser-based computer game. For example, in embodiments wherein the browser-based computer game is embodied as a Flash game, the browser-based game loader may be embodied as a compiled Flash file (e.g., a .swf file) that is executable by a web browser.

Once the server 102 generates the browser-based game loader, the server 102 transmits the browser-based game loader (including the encrypted browser-based game and encryption key in some embodiments) to the developer client 104 via the network 108.

Referring back to FIG. 2, the developer client 104 receives the browser-based game loader from the server 102 in step 208. Subsequently, in step 210, the developer publishes the browser-based game loader for downloading by the public (via the network 108). To do so, the developer may store the browser-based game loader on a local web server 132 (i.e., a web server operated by the developer). Alternatively, the developer may upload or otherwise provide the browser-based game loader to a third-party web server 132 (i.e., a web server controlled and operated by a third-party) for publication thereon. Further, in some cases, an unknown and/or unauthorized third-party may publish the browser-based game loader, or copy thereof, on a web server 132 controlled by the unauthorized third-party. For example, a “pirated” or otherwise unauthorized copy of the browser-based game loader may be published on an unknown/unauthorized web server by a third-party.

The browser-based game loader may be made available to the public via links published on suitable websites. It should be appreciated that the browser-based game loader is used in place of the compiled browser-based computer game. That is, as discussed in more detail below, when an end-user desires to play the browser-based game, the browser-based game loader is transmitted to the end-user in place of the compiled browser-based game.

Referring now to FIG. 4, an end-user may download and play the browser-based game created by the developer by implementing an algorithm 400. The algorithm 400 for executing a browser-based game begins with a step 402 wherein the end-user operates the end-user client 106 to navigate to a network site at which the browser-based game loader is published. As discussed above, the network or web site(s) at which the browser-based game loader is available may be maintained on one or more of the web servers 132, which may be operated by the game developer or, alternatively, by a third-party. It should be appreciated that browser-based game may be obtainable from one of a plurality of web sites. For example, the browser-based game loader may be published by a plurality of third-parties in addition to or alternatively to the developer themselves. Once the end-user has located the browser-based game, the end-user may operate the end-user client 106 to download the browser-based game (i.e., the browser-based game loader) in step 404.

Referring now to FIG. 5, when the web browser of the end-user client 106 executes the browser-based game loader, the browser-based game loader (or web browser itself) executes an algorithm 500 for decrypting and updating a browser-based computer game. The algorithm 500 begins with a step 502 in which the browser-based game loader decrypts the encrypted browser-based computer game. As discussed above, the encrypted browser-based computer game is included in the browser-based game loader. It should be appreciated that because the compiled browser-based computer game is encrypted, the ability of the end-user to decompile or otherwise obtain the source code of the browser-based computer game may be reduced. In this way, encryption of the compiled browser-based computer game provides an amount of security or obfuscation to the compiled browser-based computer game.

The browser-based game loader may use any suitable decryption algorithm to decrypt the encrypted browser-based computer game. Typically, the decryption algorithm is identical to or based on the encryption algorithm used to generate the encrypted browser-based computer game. In embodiments wherein an encryption key is included in the browser-based game loader, the browser-based game loader may use the encryption key to facilitate decryption of the encrypted browser-based computer game. Alternatively, in embodiments wherein the encryption key is stored in the storage device 124 of the server 102, the browser-based game loader may be configured to communicate with the server 102 via the network 108 to retrieve the encryption key. The retrieved encryption key is then used by the browser-based game loader to decrypt the encrypted browser-based computer game.

In some embodiments, the browser-based game loader may be configured to check for updates to the browser-based game in step 504. If so, the browser-based game loader is configured to communicate with the server 102 to determine whether a new version of the browser-based game is available in step 506. The availability of a new version of the browser-based game may be based on the presence of a browser-executable game patch file on the server 102, notation included in a database or chart, or other algorithm used to identify when a new version of the browser-based game is available. For example, in some embodiments, the browser-based game loader may be configured to transmit the version number of the browser-based game included with the browser-based game loader to the server 102. The server 102 may be configured to compare the version number to the version number of the current version of the browser-based game. If the version of the encrypted browser-based game included in the browser-based game loader is older than the current version, the server 102 may notify the browser-based game loader that a newer version is available. Regardless, if a newer version of the browser-based computer game is available, the browser-based game loader downloads or otherwise retrieves a browser-executable game patch file from the server 102 in step 506.

Referring now to FIG. 6, the browser-executable game patch file is generated by and stored on the server 102 based on the differences between versions of the browser-based computer game. To do so, the server 102 may execute an algorithm 600 for generating a game patch file for updating a browser-based computer game. The algorithm 600 begins with step 602 in which the server 102 receives a new version of the compiled browser-based game from the developer client 104. In step 604, the server 102 compares the new version of the compiled browser-based game to the current version of the compiled browser-based game, a copy of which may be stored in the storage device 124 of the server 102. Based on the comparison of the versions of the browser-based computer game, the server 102 determines the differences between the two versions in step 604. The server 102 may use any suitable algorithm or method to compare the versions and determine such differences. In one particular embodiment, the server 102 uses a binary difference algorithm, commonly known as “Bsdiff”, to determine the differences between the two versions of the browser based game. However, other difference algorithms may be used in other embodiments. The differences between the two versions of the browser-based computer game may include deleted programming code, additional programming code, and/or other changes to the programming code of the older version of the browser-based computer game relative to the newer version of the browser-based computer game.

Once the server 102 has determined the differences between the versions of the browser-based computer game, the server 102 generates a browser-based game update file based on the determined differences. The update file may be embodied as programming code, which when merged with the older version of the compiled browser-based computer game generates a browser-based computer game identical to or otherwise equivalent to the newer version of the browser-based computer game. That is, the generated browser-based computer game may be identical to the new version of the browser-based computer game if the programming code of the generated browser-based computer game is identical to the programming code of the newer version of the compiled browser-based computer game. Alternatively, the generated browser-based computer game may be equivalent to the new version of the browser based computer game if, when executed by a web browser, the generated browser-based computer game causes the web browser to behalf in a manner similar to new version of the browser-based computer game even if the programming code of each browser-based computer game is not identical.

Once the update file has been generated, the server 102 generates an browser-executable game patch file in step 608 The browser-executable game patch file is embodied as a browser-executable file, which includes the update file. As discussed in more detail below, when the browser-executable game patch file is executed by a web browser, the browser executable game patch file (or web browser) merges the update file with the decrypted compiled browser-based computer game included with the browser-based game loader to generate an updated compiled browser-based computer game. As discussed above, the updated compiled browser-based computer game is identical or otherwise equivalent to the new version of the browser-based computer game. Once the browser-executable game patch file is generated, the server 102 stores the browser-executable game patch file in the storage device 124.

Referring back to FIG. 5, after the end-user client 104 has retrieved the browser-executable game patch file from the server 102 in step 506, the web browser of the end-user client 104 executes the browser-executable game patch file in step 508. In response, the browser-executable game patch file (or web browser) merges the update file, which is included with the browser-executable game patch file as discussed above, with the decrypted compiled browser-based game included with the browser-based game loader. To do so, the browser-executable game patch file may (or web browser) may use any suitable algorithm to merge the programming code of the update file and the decrypted compiled browser-based game together. For example, in some embodiments, the browser-executable game patch file may first decompile the compiled browser-based game, merge the programming codes together, and recompile the browser-based game to generate an updated compiled browser-based game.

Once any applicable updates have been applied to the browser-based game, the browser-based game loader executes the compiled browser-based computer game (or updated compiled browser-based computer game in those embodiments in which a new version of the browser-based computer game was available) in step 512. In some embodiments, the browser-based game loader may also be configured to display advertisements to the end-user before, during, or after execution of the browser-based computer game. If so, the browser-based game loader may execute an algorithm 520 for retrieving and displaying advertisements.

The algorithm 520 begins with step 522 in which the browser-based game loader (or web browser) determines whether any advertisements or new advertisements should be displayed. If so, the browser-based game loader (or web browser) communicates with the server 102 via the network 108 to retrieve a new advertisement in step 524. The advertisement(s) may be embodied as any type of advertisements including, but not limited to, still images or graphics, animation, video, browser-executable files or programs, and/or a combination thereof. The advertisements may be sized for display to the end-user in the same browser as the browser-based computer game or, alternatively, in a separate browser.

Once the new advertisement has been downloaded from the server 102, the browser-based game loader displays the advertisement to the end-user in step 526. The browser-based game loader may display the advertisement to the end-user before execution of the browser-based game, during execution of the browser-based game, or after execution of the browser-based game. For example, in one particular embodiment, the browser-based game loader is configured to display a new advertisement to the end-user between each segment (e.g., each “level” or “chapter”) of the browser-based game. The browser-based game loader may continue retrieving new advertisement and displaying the advertisements to the end-user while the end-user is playing the browser-based game.

While the disclosure has been illustrated and described in detail in the drawings and foregoing description, such an illustration and description is to be considered as exemplary and not restrictive in character, it being understood that only illustrative embodiments have been shown and described and that all changes and modifications that come within the spirit of the disclosure are desired to be protected.

There are a plurality of advantages of the present disclosure arising from the various features of the methods and system described herein. It will be noted that alternative embodiments of the methods and systems of the present disclosure may not include all of the features described yet still benefit from at least some of the advantages of such features. Those of ordinary skill in the art may readily devise their own implementations of the methods and systems that incorporate one or more of the features of the present invention and fall within the spirit and scope of the present disclosure as defined by the appended claims. 

1-21. (canceled)
 22. A computer comprising: a processor; and a memory device coupled to the processor, the memory device having stored therein a plurality of instructions, which when executed by the processor causes the processor to: receive a compiled browser-based computer game over a network; encrypt the compiled browser-based computer game to generate an encrypted compiled browser-based computer game; and generate a browser-based game loader, the browser-based game loader including the encrypted compiled browser-based computer game, wherein execution of the browser-based game loader by a web browser causes the web browser to (i) decrypt the encrypted compiled browser-based computer game and (ii) execute the compiled browser based computer game.
 23. The computer of claim 22, wherein to encrypt the compiled browser-based computer game comprises to generate an encryption key.
 24. The computer of claim 23, wherein the browser-based game loader includes the encryption key.
 25. The computer of claim 24, wherein execution of the browser-based game loader by the web browser causes the browser-based game loader to decrypt the encrypted compiled browser-based computer game using the encryption key.
 26. The computer of claim 23, wherein the plurality of instructions, when executed by the processor, further causes the processor to store the encryption key on a storage device.
 27. The computer of claim 26, wherein execution of the browser-based game loader by the web browser causes the browser-based game loader to retrieve the encryption key over the network and decrypt the encrypted compiled browser-based computer game using the encryption key.
 28. The computer of claim 23, wherein the plurality of instructions, when executed by the processor, further causes the processor to receive an updated version of the compiled browser-based computer game over the network.
 29. The computer of claim 28, wherein the plurality of instructions, when executed by the processor, further causes the processor to: determine differences between the compiled browser-based computer game and the updated version of the compiled browser-based computer game, and generate an update file based on the differences between the compiled browser-based computer game and the updated version of the compiled browser-based computer game, the update file including programming code which when merged with the compiled browser-based computer game generates a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
 30. The computer of claim 29, wherein the plurality of instructions, when executed by the processor, further causes the processor to: generate a browser-executable game patch file, the browser-executable game patch file including the update file, wherein execution of the browser-executable game patch file by a web browser causes the web browser to merge the update file with the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
 31. The computer of claim 30, wherein the plurality of instructions, when executed by the processor, further causes the processor to store the browser-executable game patch file on a storage device.
 32. The computer of claim 31, wherein execution of the browser-based game loader by the web browser causes the web browser to (i) retrieve the browser-executable game patch file from the storage device over the network and (ii) execute the browser-executable game patch file.
 33. The computer of claim 32, wherein execution of the browser-based game loader by the web browser causes the web browser to merge the update file with the compiled browser-based computer game to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
 34. A method for executing a browser-based computer game on a client computer, the method comprising: downloading a browser-based game loader over a network from a remote computer, the browser-based game loader including an encrypted compiled browser-based computer game; and executing the browser-based game loader with a web browser on the client computer, wherein execution of the browser-based game loader on the client computer causes the web browser to (i) decrypt the encrypted compiled browser-based computer game and (ii) execute the compiled browser based computer game.
 35. The method of claim 34, wherein execution of the browser-based game loader on the client computer causes the web browser to decrypt the encrypted compiled browser-based computer game using an encryption key.
 36. The method of claim 34, wherein execution of the browser-based game loader on the client computer causes the web browser to (i) retrieve an encryption key from a remote computer and (ii) decrypt the encrypted compiled browser-based computer game using the encryption key.
 37. The method of claim 34, further comprising: communicating with a server computer over the network to determine whether an updated version of the compiled browser-based computer game exists; and retrieving a browser-executable game patch file from the server computer with the client computer if the updated version of the compiled browser-based computer game exists, wherein the browser-executable game patch file includes programming code which when merged with the compiled browser-based computer game generates a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
 38. The method of claim 37, further comprising merging the programming code and the compiled browser-based computer game on the client computer to generate a browser-based computer game equivalent to the updated version of the compiled browser-based computer game.
 39. The method of claim 34, wherein execution of the browser-based game loader causes the web browser to (i) communicate with a server computer to retrieve an advertisement and (ii) display the advertisement in the web browser on the client computer.
 40. The method of claim 39, wherein to display the advertisement in the web browser includes displaying the advertisement in the web browser contemporaneously with the compiled browser-based computer game.
 41. The method of claim 39, wherein to display the advertisement in the web browser includes displaying the advertisement in the web browser between game segments of the compiled browser-based computer game.
 42. A method for updating a browser-based computer game on a client computer, the method comprising: downloading an encrypted compiled browser-based computer game from a remote computer over a network with the client computer; decrypting the encrypted compiled browser-based computer game with the client computer to generate a compiled browser-based computer game; communicating with a server computer over the network to determine whether an update version of the compiled browser-based computer game is available; retrieving programming code from the server computer with the client computer if the updated version of the compiled browser-based computer game is available; and updating the compiled browser-based computer game with the programming code on the client computer to generate an updated compiled browser-based computer game substantially similar to the updated version of the compiled browser-based computer game. 